
#ifndef	GAME_RUNNING_STATE_HPP
#define	GAME_RUNNING_STATE_HPP

#include <game_state/game_state.hpp>
#include <messenger/messenger.hpp>
#include <level/level_fwd.hpp>

class game_running_state : public base_game_state
{
public:

	game_running_state( std::string const & level_file );
	~game_running_state( );

	game_state_ptr step( float delta_time );
	void draw( );

private:

	void message_callback( std::string const & message_name, message_data_ptr data );
	boost::signals2::scoped_connection m_messenger_connection;

	game_state_ptr	m_running_state;	///< Two possible states the game can be in while running. "playing" or "switching"
	level_ptr		m_level;			///< game_running_state owns the level, but the sub states take references to it. It is their job to update it appropriately.
										///< It is drawn from within game_running_state though.
};

#endif	//GAME_RUNNING_STATE_HPP
